Міністерство освіти і науки України
Національний університет „ Львівська політехніка “
Кафедра ЕОМ
Звіт
З Лабораторної роботи №2:“ Потоковий ввід-вивід ”
Мета роботи: ПОЗНАЙОМИТИСЯ ІЗ ПОТОКОВИМ ВВОДОМ-ВИВОДОМ.
Короткі теоретичні відомості
Потоки вводу-виводу в С++
Система вводу-виводу в стандартній бібліотеці С++ реалізована у вигляді потоків. Потік вводу-виводу – це логічний пристрій, який приймає та видає інформацію користувача. Кожен потік зв’язаний з фізичним пристроєм (клавіатура, монітор) або з файлом. Бібліотека потоків iostream реалізована як ієрархія класів та забезпечує широкі можливості для виконання операцій вводу-виводу. Далі наведено призначення деяких класів потокового вводу-виводу:
istream – підтримує операції по вводу;
ostream – підтримує операції по виводу;
iostream – підтримує операції по вводу-виводу;
іfstream – підтримує операції по вводу з файлу;
ofstream – підтримує операції по виводу у файл;
fstream – підтримує операції з файлами по вводу-виводу.
Стандартні потоки
Коли запускається програма на С++, автоматично створюються чотири стандартних потоки.
Табл..1
Потік
Призначення
Пристрій по замовчуванню
cin
Стандартний ввід
Клавіатура
cout
Стандартний вивід
Монітор
cerr
Стандартний вивід повідомлень про помилки
Монітор
clog
Стандартний вивід повідомлень про помилки (буферизований)
Монітор
Щоб мати можливість використовувати стандартні потоки необхідно підключити заголовочний файл iostream.h.
Об’єкт стандартного потоку вводу cin класу istream, зв’язаний із стандартним пристроєм вводу, за звичай клавіатурою. Об’єкт стандартного потоку виводу cout класу ostream, зв’язаний із стандартним пристроєм виводу, за звичай монітором. Об’єкт cerr класу ostream, зв’язаний із стандартним пристроєм виводу повідомлень про помилки. Потоки даних, що виводяться, для об’єкту cerr являються небуферизованими. Тобто кожна операція помістити в cerr приводить до миттєвої появи повідомлень про помилки. Об’єкт clog класу ostream, зв’язаний із стандартним пристроєм виводу повідомлень про помилки. Потоки даних, що виводяться, для об’єкту clog являються буферизованими. Тобто кожна операція помістити в clog може привести до того, що вивід буде зберігатися в буфері до тих пір, поки буфер повністю не заповниться або ж поки вмістиме буферу не буде виведене примусово.
Вивід в потік виконується за допомогою операції «помістити в потік», а саме перевантаженої операції <<. Дана операція перевантажена для виводу елементів даних стандартних типів, для виводу рядків та значень вказівників.
Операція << повертає посилання на об'єкт типу ostream, для якого вона викликана. Це дозволяє будувати ланцюжок викликів операції «помістити в потік», що виконуються зліва направо.
Ввід потоку виконується за допомогою операції «взяти із потоку», а саме перевантаженої операції >>. Дана операція зазвичай ігнорує у вхідному потоці символи розділювачі та пробільні символи. Операція «взяти із потоку» повертає нульове значення (false), якщо зустрічає в потоці признак кінця файлу або виникає помилка при спробі читання із потоку.
Засоби форматування потоку
Система вводу-виводу дозволяє виконувати форматування даних та змінювати визначені параметри вводу інформації. Дані операції реалізовані за допомогою функцій форматування, прапорців та маніпуляторів.
Функції форматування та їх призначення приведені у табл.2.
Табл..2
Функція-член
Призначення
width(int wide)
Дозволяє задати мінімальну ширину поля для виведення значення. При вводі задає максимальне число символів, що читаються. Якщо значення, що виводиться, має менше символів, чим задана ширина поля, то воно доповнюється символами-заповнювачами до заданої ширини (за замовчуванням - пробілами). Якщо ж значення, що виводиться має більше символів, чим ширина відведеного йому поля, то поле буде розширене.
precision(int prec)
Дозволяє прочитати або встановити точність (число цифр після десяткової крапки), з якою виводяться числа з плаваючою крапкою. По замовчуванню...